﻿using System;
using System.Collections.Generic;

//using AIDE.Base;

using SMLib.Automata.Base;
using MBT.GraphAlgorithms;

namespace MBT.Conformance.OfflineTesting
{
    /// <summary>
    /// Interface for Offline Test Case Generators: 
    /// This can be used to connect the learning algorithms to test case generation tool
    /// </summary>
    public interface IOfflineTCG
    {
        /// <summary>
        /// Enumerate Test Cases one by one
        /// </summary>
        /// <returns></returns>
        IEnumerable<List<NDGraphTraversalStep<string, int>>> EnumerateTestCases();

        /// <summary>
        /// Generate Test suit (including all test cases)
        /// </summary>
        /// <returns></returns>
        List<List<NDGraphTraversalStep<string, int>>> GenerateTestSuit();
    }

    /// <summary>
    /// Interface for offline Test Case Generator (for deterministic systems)
    /// <!--<remarks>For nondeterministic systems, we don't generate test suite and we use online testing</remarks>-->
    /// </summary>
    public interface IOfflineTCG_D
    {
        IEnumerable<Word> EnumerateTestCases();
        List<Word> GenerateTestSuite();
    }
}
